package com.hyt.it.ogt.kq.service.bm.model.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.List;

@Data
@Accessors(chain = true)
@ApiModel(value = "OrderInfoVo对象", description = "订单详情信息")
public class OrderInfoVo {

	@ApiModelProperty(value = "项目id")
	private String projectId;

	@ApiModelProperty(value = "项目名称")
	private String projectName;

	@ApiModelProperty(value = "订单类型（1：，报名费，2：教材费，3：其它）")
	private Integer type;

	@ApiModelProperty(value = "订单id")
	private String orderId;

	@ApiModelProperty(value = "支付时间")
	private String orderTime;

	@ApiModelProperty(value = "支付状态")
	private String payStatus;

	@ApiModelProperty(value = "报名费用")
	private BigDecimal price;

	@ApiModelProperty(value = "实际应付")
	private BigDecimal actrualPrice;

	@ApiModelProperty(value = "优惠金额")
	private BigDecimal couponPrice;

	@ApiModelProperty(value = "支付方式")
	private String paymentModeAlias;

	@ApiModelProperty(value = "订单内容")
	private List<StudentSubjectVo> orderInfo;

	@ApiModelProperty(value = "注册id")
	private String regId;

	@ApiModelProperty(value = "考生Id")
	private String studentId;
	
	@ApiModelProperty(value = "考生姓名")
	private String studentName;

	@ApiModelProperty(value = "考生电话")
	private String studentPhone;

	@ApiModelProperty(value = "退款状态（0:退款申请中 ,1：退款中,2：退款完成,3：退款失败，）")
	private Integer refundStatus;

	@ApiModelProperty(value = "退款原因 ")
	private String refundResult;
	
	@ApiModelProperty(value = "退款金额 ")
	private String refundAmount;
	
	@ApiModelProperty(value = "退款内容 ")
	private String refundInfo;
	
	@ApiModelProperty(value = "是否需要缴费:0不需要,1需要")
	private String isPay;

	@ApiModelProperty(value = "是否允许退款（0：允许，1：不允许）")
	private String isRefund;
	
	@ApiModelProperty(value = "是否团体缴费")
	private String isGroup;
	
	@ApiModelProperty(value = "缴费人")
	private String payName;
	
	@ApiModelProperty(value = "项目是否允许退费") // 区别于项目能不能退费，主要是给前端使用，有业务逻辑，如果过了退费时间是不能退费的
	private Boolean allowRefund = Boolean.TRUE;
}
